const express = require('express')
const router = require('../routes/index')
const app = express()
const jwt = require('express-jwt')
const { secretKey } = require('../utils/secret')
const cors = require('cors')
const util = require('util')
const path = require('path')

// 处理跨域
app.use(cors())

app.use('/images', express.static(path.join( __dirname, "../", "/uploads")))

app.use(jwt({
  secret: secretKey, // 生成token时的 钥匙，必须和创建token时的秘钥一致才能解密
  algorithms: ['HS256'] // 生成token时的 钥匙，必须和创建token时的秘钥一致才能解密
  // credentialsRequired: false  //您可能希望使用此模块标识已注册用户，同时仍然提供对未注册用户的访问。你可以使用选项credentialsRequired:
}).unless({
  path: ['/api/verify/login', '/api/verify/register'] // 生成token时的 钥匙，必须和创建token时的秘钥一致才能解密
}))

app.use(express.json())
app.use(express.urlencoded({extended: true}))

// 路由中间件
app.use('/api', router)

require('../middleware/app')(app)
app.listenAsync = util.promisify(app.listen)

module.exports =  function () {
  return app
}